package com.anabur.dao;

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.anabur.persistent.Cotizacion;
import com.anabur.system.AafAbstractDAO;



public class CotizacionDAO extends AafAbstractDAO{
	
	public CotizacionDAO(SessionFactory sessionFac){
		super(sessionFac);
	}
	
	protected String getNameOfPojo() {
		return Cotizacion.class.getSimpleName();
	}

	public Cotizacion getUltimaCotizacion(Date fecha, String codigo) throws Exception{
		List<Cotizacion> list=null;
		Session sess = null;
		try{
			sess = sessionFac.openSession();
			Query query = sess.createQuery("from Cotizacion as c " +
					"where (c.fecha <= :fecha) and (c.empresa.codigo = :codigo)"+ 
					"order by c.fecha desc") ;
			query.setDate("fecha",fecha);
			query.setString("codigo",codigo);
			query.setMaxResults(1);
			list = query.list();
			sess.close();
		}catch (Exception e) {
			sess.close();
			throw e;
		}
		return (Cotizacion)list.get(0);	// y si list es null o no tiene rows?	
	}
	
	public Long getCotizacionIDPorFechaYempresaID(Date fecha, Long empresaID) throws Exception{
		Long cotizacionID = null;
		Session sess = null;
		try{
			sess = sessionFac.openSession();
			Query query = sess.createQuery("from Cotizacion as c " +
					"where c.fecha = :fecha " +
					"and c.empresa.id = :empresaID") ;
			query.setDate("fecha", fecha);
			query.setLong("empresaID", empresaID);
			Cotizacion c = (Cotizacion) query.uniqueResult();
			if(c != null){
				cotizacionID = c.getID();
			}
			sess.close();
		}catch (Exception e) {
			sess.close();
			throw e;
		}
		return cotizacionID;
	}
	
}
